查看原文
其他

我们怎样在一个月内做了 5 万个 NFT | Polkadot Decoded NFT 的诞生过程

Parity PolkaWorld 2022-11-23

加入 PolkaWorld 社区,共建 Web3

本文译自 Parity 官方博客,由 PolkaWorld 翻译。

本文贡献者:

Simon Telezhkin,Parity Technologies 视觉 3D 设计师

Ignasi Albero,Web3 基金会品牌负责人

Hamid Alipour,Parity Technologies 全栈产品工程师

关于 Polkadot Decoded 2022 大会,我们提出了一个想法,即为现场和在线参会者提供一些特别的东西:他们自己的、独特的 NFT!往下读你会了解到有关这份礼物概念的更多信息,以及我们团队如何在短短一个月内创建一个包含 50,000 个不同头像的系列(collection)——这显示了 Polkadot 生态系统的多元化和创新。

活动 NFT 背后的想法

虽然每个人都喜欢在活动中获得很酷的贴纸,但对于 Polkadot Decoded 2022,我们希望为参会者提供一些更独特的东西带回家。

我们选择了一个程序生成的 NFT,允许每个参会者拥有自己独一无二的头像——为参加 Polkadot Decoded 的社区成员创建一个庞大的系列。所有 NFT 都作为参会证明。我们想给人们一件收藏品来纪念这一事件。因此,NFT 的设计目的是不出售(你也不会出售你最喜欢的音乐节的手环,对吧?)。

这些 NFT 有着不同的等级,大家获得的纪念品的稀有程度都取决于他们报名的时间。前 1000 名报名者首先获得了最独特的 NFT,他们可以用 Polkadot Decoded 活动期间通过电子邮件发送的兑换码来领取。

Simon 如何设计出五万个 Polkadot Decoded NFT

视觉 3D 设计师 Simon Telezhkin 在 Polkadot Decoded 活动开始前几周才刚加入 Parity,当被要求为该活动创建五万个独特的 NFT 时, Simon 立即投入了其中。

他提出了一个在给定时间范围内创建五万个 NFT 的计划。创作、渲染和完成这些艺术作品,通常需要几个月的工作——而 Simon 距离活动开始只有一个月的时间。

在脑暴节省时间的方法时,他考虑了使用蒙版进行渲染来赋予某些图像部分不同的颜色,或选择渲染农场。但这两种方法都可能导致必须创建更多图像,处理大量数据,或者最终得到形状看起来过于相似的 NFT(仅有颜色变化)。

这就是他选择了像素艺术——一种适合所有 NFT 项目要求的有趣风格——的原因。

Simon 使用免费的开源工具 Blender 创作了这些作品。虽然他更喜欢 Houdini 作为他的首选 DCC(数字内容创作),但事实证明,Blender 是创建模块化部件和渲染的绝佳工具。以下是创建过程:

第一步:为角色创建模块化系统

Simon 首先将每个模块化机器人角色的不同部分分开:

  • 头部,包括面部和面具
  • 底部,包括下巴、脖子和肩膀
  • 中间部分,包括耳朵、面罩和侧面
  • 头部的后部
  • 衣服

当你用 5 个模块创建五万个图像时,你只需要每个模块的 9 个变体即可获得 (9^5=)59049 个变体。但是,并非每个模块都是等量地创建的。如果你只改变耳朵、头发和衣服,而让脸部的顶部和底部保持不变,那么两个版本看起来会非常相似。作为 MVP,这样做是可行的,但西蒙决心为角色带来更多变化。这将我们带到了下一步。

第二步:组合所有模块化部件

虽然不可能手动将视觉属性切换到多个对象五万次,但你可以安装插件 FZRandomizer 3 —— 一个 Blender 插件,它允许你随机化角色和其他网格对象。虽然该插件在处理五万个图像时缺乏稳定性,但它速度很快,能够制作 JSON 文件,并且可以处理概率。

第三步:加一点 YouTube 和一点开源

对于渲染,Simon 选择了循环渲染光,然后将其转换为渲染器数据,然后再次渲染。这个想法的灵感来自 Mezaka 的此教程:https://www.youtube.com/watch?v=Cwh_TpouPfQ。当 Mezaka 的插件在 3000 张图片后速度变慢时,开源来救场了。通过对代码进行一些更改,Simon 能够重新设计渲染器,并实现驱动程序来根据帧渲染更改颜色和材质。

Pallet、unique 以及更多元素:设置 NFT 系列

NFT(Non-Fungible Tokens 的缩写)是不可互换的独特资产,可用于在区块链账本上登记任何独特、不可替代资产的所有权。在 Substrate 框架中,存储和处理 NFT 资产的区块链模块(pallet)被称为 “Uniques” —— 这是一种更安全的铸造方式。

虽然大多数区块链网络使用在区块链之上运行的智能合约,但在 Polkadot 中,Uniques pallet 是作为区块链本身的一部分的模块,它提供了创建 NFT 系列和物品的基本功能。这带来了更高级别的安全性,因为链上只有一个实现是经过审计确认为安全的,并且已经被许多项目实战测试过了。

相比之下,基于智能合约的生态为每个 NFT 项目使用单独的智能合约。这增加了在开发过程中可能创建的错误/后门的可能性,这就是为什么每个项目都需要单独审计和验证的原因。

Uniques pallet 的另一个好处是,任何人都可以很容易地在链上创建自己的 NFT 系列,无需太多开发或依赖第三方开发人员来构建智能合约(因为无需开发和部署任何智能合约)。

对于 Polkadot Decoded 的 NFT,我们使用了 Uniques pallet,因此我们可以将所有精力都花在艺术品上,而不是开发智能合约上。毕竟,发行五万 NFT 本身就是很大的工作量了。幸运的是,这不是我们第一次做这种规模的系列,所以我们可以利用为之前的系列开发的自动化工具(继续阅读以了解有关这些开源工具的更多信息)。

使用 Uniques pallet 作为我们的模块选择,最后要考虑的是是否在 Polkadot 或 Kusama 上铸造 NFT 系列。该 pallet 目前作为一个模块部署在了两条公益平行链上 —— Polkadot 的 Statemint 平行链和 Kusama 的 Statemine 平行链。而事实证明 Kusama 是当时最具性价比的选择。

💡 背景小知识:Uniques pallet 旨在提供开箱即用的核心 NFT 功能,并让每个人都可以创建自己的 NFT 集合。在该 pallet 的下一个版本 “Uniques V2” 中,将添加更多核心功能。其目的是将核心功能保留在该 pallet 中,让社区平行链可以将其扩展为更多定制的使用场景,例如可组合的 NFT 和游戏。

是时候让 Hamid 铸造那五万个 NFT 了!

艺术品都准备好后,是时候让 Hamid 铸造 NFT 了。

如果要手动操作,那么在链上铸造五万个独特的 NFT 将是一个非常耗时且繁琐的过程。值得庆幸的是,Hamid 有一个 CLI 工具来自动化整个铸造过程。

我们将引导你完成创建集合和铸造 NFT 项目所需的手动步骤,然后展示如何使用 CLI 工具来自动化铸造过程。

第一步:创建一个系列

使用 Unique pallet,我们创建了 “uniques.create” 调用,它创建了一个系列,该系列有一个 collection id,可用于铸造该系列中的物品。

第二步:分发 NFT

使用所有 Polkadot Decoded 参与者的电子邮件地址,我们可以发送一个保密的礼物兑换码,人们可以在 https://claimnft.kusama.network/#/claim 这个页面上使用该兑换码来领取自己的 NFT。每个兑换码都由随机数组成(更多关于创建过程的信息请查看 https://polkadot.js.org/docs/keyring/start/suri#working-with-non-mnemonics ),用作密钥中的种子,以派生账户的密钥对及其对应地址,然后可以将其用作每个预铸 NFT 所有者的地址。

第三步:铸造所有 NFT

使用 uniques.mint 调用,是时候最终铸造所有 NFT 了。在铸造期间,每个项目将被分配到一个地址。当 NFT 密码被领取时,领取 app 将检查相应的地址是否源自该密码,并转移所有 NFT 和资产。领取 app 可以让接收者通过 app 创建一个新账户,或者从某人的 Polkadot-JS 扩展或 Parity Signer 钱包中选择一个现有账户。

第四步:设置所有元数据

在区块链上创建(又名铸造)NFT 物品后,需要为每个物品设置元数据。此元数据链接到包含 NFT 名称、描述和图像 URL 的 JSON 文件。我们使用了以下格式,大多数钱包和 UI 都支持该格式。

{
"name": "name of the item",
"description": "A human readable description of the item. Markdown is supported."
"image": "This is the URL to the image of the item. Can be just about any type of image (including SVGs, which will be cached into PNGs by OpenSea), and can be IPFS URLs (ipfs://ipfs/<CID>) or paths.",
}

第五步:安全存储元数据

为了存储元数据和任何相关资产,我们使用了像 IPFS(星际文件系统)这样的去中心化存储系统。对于这个系列,我们将元数据存在 IPFS 上并使用 Pinata 将我们的资产固定(pin)在 IPFS 上。

固定在 IPFS 上是指一个服务器或一组服务器保证始终存储信息以便文件永远不会从网络中删除的概念。

虽然 IPFS 是一个去中心化的点对点存储系统,并且数据缓存在 IPFS 节点上,但有时节点可能会删除旧数据,为新内容腾出空间。固定保证在任何给定时间,IPFS 网络都可以访问至少一台(或几台)服务器上的文件。你可以托管自己的 IPFS 服务器,也可以使用像 Pinata 这样的第三方服务,它提供固定服务。

存储和固定资产时,你将获得 IPFS 上这些文件的地址。这些称为 CID(Content ID),可用于通过 IPFS 网关检索资产。

第六步:创建元数据 CID

让我们逐步完成所有步骤:

  • 将每个 NFT 的图像上传到 IPFS
  • 在 IPFS 上获取该图像的 CID
  • 创建一个带有名称、描述和图像 CID 链接的 JSON 文件
  • 将该 json 文件上传到 IPFS
  • 获取 IPFS 上 metadata.json 文件的 CID
  • 使用 Uniques palette setMetadata 调用将 NFT 元数据设置为 IPFS CID。
  • 我们的活动中的示例元数据:

{
"name": "Polkadot Decoded 2022 POAPs Tier 1",
"image": "ipfs://ipfs/QmPotLZPgW9AvNzuNGB24zVqbWY9eP7Sbrzk3KCdydyB66",
"description": "The Polkadot Decoded NFTs were minted and distributed as POAPs for Polkadot Decoded v3 that was held on June 29th and 30th, 2022, with a fully hybrid experience of online and in-person events. All those who registered were able to claim a one of a kind, unque NFT that they could additionally use as their avatar for the conference. Each tier varied in how rare the NFTs were, with tier 1 being the most rare, then tier 2, tier 3, and so on."
}

当钱包或 NFT UI 想要检索和呈现 NFT 时,他们会进入区块链并找到存储在 Uniques pallet 上的 metadata.json 文件的 CID。然后他们从中解析出信息 —— 使用 “图像” CID 来检索实际的 NFT 资产 —— 并将它们呈现在 UI 上。

第七步:使用我们的 cli 工具自动化操作

如果所有 NFT 都相同,我们只需调用 uniques.setCollectionMetadata 为整个集合设置一个元数据。但是,对于我们庞大的系列,我们需要生成五万个图像并将其上传到 IPFS,获取它们的 CID,并通过调用 uniques.setMetadata 在区块链上为 NFT 生成五万个元数据。

手动执行此操作将是一场噩梦。幸运的是,得益于我们开发的 cli 工具,我们不必手动操作,该工具自动化了这个过程。

我们如何使用 cli 工具:

  • 将 NFT 信息放入 .csv 文件中
  • 在 JSON 文件中定义 mint 工作流程,该文件配置为使用该 .csv 文件作为数据文件
  • 调用 cli 运行定义的工作流 这些步骤让整个工作流程自动化:从创建系列到铸造物品、生成礼物密码和地址、将图像上传到 IPFS、为每个 NFT 生成元数据、上传到 IPFS,最后按照上述步骤,将每个物品的元数据设置到 Uniques pallet 上。

通过所有这些操作,每个 NFT 仍然需要大约一秒钟的时间来铸造,因此脚本总共运行了将近 13 个小时!谢天谢地,它是自动化的,所以铸造在一夜之间完成了,并准备在 Polkadot Decoded 的第一天分发!

项目完成:看看持有者们有多开心吧!

在 Polkadot Decoded 之后,不同等级的两万五千个 NFT 被领取了 —— 产生了许多快乐的新持有者!可以在这里 https://singular.app/collectibles/statemine/2022 查看整个系列。下面,你将看到一些铸造出来的 NFT 和它们的新主人。

原文:https://www.parity.io/blog/how-we-created-50K-NFTs-for-Polkadot-Decoded-2022-in-one-month

翻译:PolkaWorld

  • PolkaWorld Telegram 群:

    t.me/polkaworld

  • PolkaWorld Youtube 频道:

    https://www.youtube.com/c/PolkaWorld

  • PolkaWorld Twitter:

    @polkaworld_org


更多内容


W3F 第 15 轮 Grant 发放情况:37 笔 Grant 都发给了谁?

Moonbeam 现已集成跨链协议 Ren Protocol

波卡周报 | Polkadot 即将上线提名池功能!W3F 和 Parity 发布多个岗位招聘!


关注 PolkaWorld

发现 Web 3.0 时代新机遇


点个 “在看” 再走吧!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存